package com.example.erat.service;

import com.example.erat.dto.CourseDTO;
import com.example.erat.dto.ExperimentDTO;

import java.util.List;

/**
 * 课程服务接口
 */
public interface CourseService {

    /**
     * 创建课程
     * 
     * @param courseDTO 课程信息
     * @return 创建后的课程信息
     */
    CourseDTO createCourse(CourseDTO courseDTO);
    
    /**
     * 更新课程
     * 
     * @param courseDTO 课程信息
     * @return 更新后的课程信息
     */
    CourseDTO updateCourse(CourseDTO courseDTO);
    
    /**
     * 删除课程
     * 
     * @param id 课程ID
     */
    void deleteCourse(Long id);
    
    /**
     * 获取课程详情
     * 
     * @param id 课程ID
     * @return 课程详情
     */
    CourseDTO getCourseById(Long id);
    
    /**
     * 获取课程列表
     * 
     * @return 课程列表
     */
    List<CourseDTO> listCourses();
    
    /**
     * 添加实验
     * 
     * @param courseId 课程ID
     * @param experimentDTO 实验信息
     * @return 添加后的实验信息
     */
    ExperimentDTO addExperiment(Long courseId, ExperimentDTO experimentDTO);
    
    /**
     * 更新实验
     * 
     * @param experimentDTO 实验信息
     * @return 更新后的实验信息
     */
    ExperimentDTO updateExperiment(ExperimentDTO experimentDTO);
    
    /**
     * 删除实验
     * 
     * @param experimentId 实验ID
     */
    void deleteExperiment(Long experimentId);
    
    /**
     * 获取课程实验列表
     * 
     * @param courseId 课程ID
     * @return 实验列表
     */
    List<ExperimentDTO> listCourseExperiments(Long courseId);
} 